package org.example;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test3 {

    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        List<Integer> row = new ArrayList<>();//一行
        row.add(1);//第一行的第一个数
        ret.add(row);//第一行
        for (int i = 1; i < numRows; i++) {
            List<Integer> current = new ArrayList<>();
            current.add(1);//后面这一行的第一个数是1
            List<Integer> pre = ret.get(i - 1);
            for(int j = 1; j < i; j++) {
                //[i][j] = [i-1][j] + [i-1][j-1]
                int pos = pre.get(j) + pre.get(j - 1);
                current.add(pos);
            }
            current.add(1);//后面这一行的第二个数也是
            ret.add(current);
        }
        return ret;
    }

    public static void main4(String[] args) {
        List<List<Integer>> ret1 = new ArrayList<>();
        ret1.add(new ArrayList<>());
        ret1.get(0).add(1);
        System.out.println(ret1.get(0).get(0));

        List<Integer> ret2 =new ArrayList<>();
        ret2.add(1);
        System.out.println(ret2.get(0));
    }
    public static void moveZero(int[] nums) {
        //给定一个数组把是0的元素放在最后，不改变其他非0元素的相对位置
        int j = 0;//num=0, 1, 0, 3, 12
        for (int i = 0; i < nums.length; i++) {
            if(nums[i] != 0) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
                j++;
            }
        }
    }
    public static void main3(String[] args) {
        int[] arr = {0, 1, 0, 3, 12};
        moveZero(arr);
        for(int temp : arr) {
            System.out.print(temp + " ");
        }
    }

    public static List<Character> func(String str1, String str2) {
        //一个方法输出str1中不包含str2的字符的部分
        List<Character> list = new ArrayList<>();
        //1.看str1中是否存在str2相关联的字符
        for (int i = 0; i < str1.length(); i++) {
            char ch = str1.charAt(i);
            if(!str2.contains(ch + "")) {
                list.add(ch);
            }
        }
        return list;
    }
    public static void main2(String[] args) {
        String str1 = "welcome to cvte";
        String str2 = "come";
        List<Character> ch = func(str1, str2);
        System.out.println(ch);
    }
    public static void main1(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        list1.add(5);
        list1.add(6);//list1={1, 2, 3, 4, 5, 6}

        List<Integer> list2 = list1.subList(1, 4);//[1,4)
        System.out.println(list2);//list2={2, 3, 4}

        list2.set(1, 100);
        System.out.println(list1);//list1={1, 2, 100, 4, 5, 6}
        System.out.println(list2);//list2={2, 100, 4]
    }
}
